fix: make global hotkey press-and-hold reliable - #113
Merged
Conversation
Establish the isolated OigoHotKey target and executable contract surface before changing shortcut behavior. Preserve the existing registrar semantics while making the app and Xcode project consume the new module. Plan: .omo/plans/issue-82-global-hotkey.md
Expose typed Carbon edge events through a generation-fenced registrar with non-destructive probes and replacement ordering. Keep failed candidates from displacing the active registration and make registration failures actionable. Plan: .omo/plans/issue-82-global-hotkey.md
Track keyboard ownership and startup release intent independently from coordinator state. Suppress duplicate and repeat edges while making processing-state input explicit and keeping mouse-owned recordings isolated. Plan: .omo/plans/issue-82-global-hotkey.md
Use Shift-Command-Space as the single shipped default, migrate only the legacy Option-Command-Space value, and allow key code zero with supported modifiers. Expose the same readable presentation through the core shortcut contract. Plan: .omo/plans/issue-82-global-hotkey.md
Capture shortcuts through an AppKit first-responder control with readable modifier glyphs, key-code-zero support, repeat suppression, validation feedback, and Escape restoration. Keep capture local to the explicit recorder surface. Plan: .omo/plans/issue-82-global-hotkey.md
Route Carbon press and release edges through a keyboard-owned intent bridge, preserve release through asynchronous startup, and share normal stop/finalization with the mouse toggle without canceling on release. Plan: .omo/plans/issue-82-global-hotkey.md
Use the native recorder in onboarding and Settings, preserve unsaved candidates on close, and surface registration state and actionable failures through the windows and menu bar. Commit settings only after the working shortcut replacement succeeds. Plan: .omo/plans/issue-82-global-hotkey.md
Remove the obsolete toggle-controller path, keep the issue-3 mouse toggle characterization, derive Settings copy from the canonical shortcut, and document deterministic and native acceptance boundaries for the full issue #82 contract. Plan: .omo/plans/issue-82-global-hotkey.md
Treat only unmodified Escape as recorder cancellation, preserve modified Escape as a valid key code, and apply Launch at Login before shortcut replacement so a failed shortcut cannot leave registration and settings out of sync. Add the issue #12 compatibility and dogfood handoff matrix with explicit native INCONCLUSIVE boundaries. Plan: .omo/plans/issue-82-global-hotkey.md
Point the deterministic and issue #12 handoff matrices at the final-SHA recorder evidence, including modified Escape as a valid candidate. Plan: .omo/plans/issue-82-global-hotkey.md
Point the deterministic and issue #12 handoff matrices at the final native build, launch, and permission-boundary receipts. Plan: .omo/plans/issue-82-global-hotkey.md
Persist the candidate through ShortcutConfigurationTransaction before publishing new in-memory settings, so shortcut registration and stored settings cannot diverge across the later settings update path. Plan: .omo/plans/issue-82-global-hotkey.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #82
Implements reliable press-and-hold global dictation for the configured Carbon shortcut.
Summary:
0support, conflict validation, and atomic replacement/restoration.Verification:
6b858bfdfeec00b8f419dfaf61d37cfefafb3f4a.95f28920dacb3ca03afa0ccf03eace316c0ed45a.Oigo.appbuild, launch, frontmost TextEdit observation, and cleanup receipts pass on macOS 26+.INCONCLUSIVEwhere unavailable.